from pydantic import BaseModel, EmailStr
from typing import Optional
from datetime import datetime

# 用户基础模型
class UserBase(BaseModel):
    username: str
    email: EmailStr
    role: str

# 用户创建模型
class UserCreate(UserBase):
    password: str

# 用户更新模型
class UserUpdate(BaseModel):
    username: Optional[str] = None
    email: Optional[EmailStr] = None
    role: Optional[str] = None

# 用户数据库模型
class UserInDB(UserBase):
    id: int
    created_at: datetime
    updated_at: datetime

    class Config:
        orm_mode = True

# 用户响应模型
class UserResponse(UserInDB):
    pass

# 用户登录模型
class UserLogin(BaseModel):
    email: EmailStr
    password: str

# Token模型
class Token(BaseModel):
    access_token: str
    token_type: str

# Token数据模型
class TokenData(BaseModel):
    email: Optional[str] = None